home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgramD2.iso / Borland / Borland C++ V5.02 / SCRIPT.PAK / IDE.SPP < prev    next >
Text File  |  1997-05-06  |  10KB  |  410 lines

  1. //----------------------------------------------------------------------------
  2. // cScript
  3. // (C) Copyright 1987, 1997 by Borland International, All Rights Reserved
  4. //
  5. // IDE.SPP
  6. //    IDE top level event handling.
  7. //
  8. // $Revision:   1.59  $
  9. //
  10. //----------------------------------------------------------------------------
  11.  
  12. import IDE;
  13. import editor;
  14. import scriptEngine;
  15. import bPopEditorKeyboard;
  16.  
  17. // Mark this module as being a library module.
  18. library;
  19.  
  20. //
  21. // File Menu provides handling for Open/SaveAS
  22. //
  23. on IDE:>FileOpen(declare acFileName, declare acToolName){
  24.    if (!DoIDEFileOpen(acFileName, acToolName))
  25.        return pass(acFileName, acToolName);
  26.    return true;
  27. }
  28.  
  29. on IDE:>FileClose(){
  30.    if (!DoIDEFileClose())
  31.        return pass();
  32.    return true;
  33. }
  34.  
  35. on IDE:>FileSave(){
  36.    if (!DoIDEFileSave())
  37.        return pass();
  38.    return true;
  39. }
  40.  
  41. on IDE:>FileSaveAs(declare filename){
  42.    if (!DoIDEFileSaveAs(filename))
  43.        return pass(filename);
  44.    return true;
  45. }
  46.  
  47. on IDE:>FileSaveAll(){
  48.    if (!DoIDEFileSaveAll())
  49.        return pass();
  50.    return true;
  51. }
  52.  
  53. on IDE:>FilePrint(declare filename){
  54.    if (!DoIDEFilePrint())
  55.        return pass(filename);
  56.    return true;
  57. }
  58.  
  59. //
  60. // Edit Menu provides handling for Cut/Copy/Paste/Undo/Redo/SelectAll/BufferList
  61. //
  62. on IDE:>EditCut(){
  63.    if (IsEditKeyboard()) {
  64.       if (!DoIDEEditCut())
  65.           return pass();
  66.    } else {
  67.       return pass();
  68.    }
  69.    return true;
  70. }
  71.  
  72. on IDE:>EditCopy(){
  73.    if (IsEditKeyboard()) {
  74.       if (!DoIDEEditCopy())
  75.           return pass();
  76.    } else {
  77.       return pass();
  78.    }
  79.    return true;
  80. }
  81.  
  82. on IDE:>EditPaste(){
  83.    if (IsEditKeyboard()) {
  84.       if (!DoIDEEditPaste())
  85.           return pass();
  86.    } else {
  87.       return pass();
  88.    }
  89.    return true;
  90. }
  91.  
  92. on IDE:>EditUndo(){
  93.    if (IsEditKeyboard()) {
  94.       if (!DoIDEEditUndo())
  95.           return pass();
  96.    } else {
  97.       return pass();
  98.    }
  99.    return true;
  100. }
  101.  
  102. on IDE:>EditRedo(){
  103.    if (IsEditKeyboard()) {
  104.       if (!DoIDEEditRedo())
  105.           return pass();
  106.    } else {
  107.       return pass();
  108.    }
  109.    return true;
  110. }
  111.  
  112. on IDE:>EditClear(){
  113.    if (IsEditKeyboard()) {
  114.       if (!DoIDEEditClear())
  115.           return pass();
  116.    } else {
  117.       return pass();
  118.    }
  119.    return true;
  120. }
  121.  
  122. on IDE:>EditSelectAll(){
  123.    if (IsEditKeyboard()) {
  124.       if (!DoIDEEditSelectAll())
  125.           return pass();
  126.    } else {
  127.       return pass();
  128.    }
  129.    return true;
  130. }
  131.  
  132. on IDE:>EditBufferList(){
  133.    if (!DoIDEEditBufferList())
  134.        return pass();
  135.    return true;
  136. }
  137.  
  138. //
  139. // Search Menu provides handling for Find/Replace/SearchAgain/PreviousMessage
  140. //                                   & NextMessage
  141. //
  142.  
  143. on IDE:>SearchFind(declare acText){
  144.    if (IsEditKeyboard()) {
  145.       if (!DoIDESearchFind())
  146.           return pass(acText);
  147.    } else {
  148.       return pass(acText);
  149.    }
  150. }
  151.  
  152. on IDE:>SearchReplace(declare acSearch, declare acReplace){
  153.    if (IsEditKeyboard()) {
  154.       declare rv = false;
  155.       declare bRestorePosition = false;
  156.       if (!DoIDESearchReplace(bRestorePosition))
  157.          if (bRestorePosition) {
  158.             editor.TopView.Position.Save();
  159.             editor.TopView.Block.Save();
  160.             rv = pass(acSearch, acReplace);
  161.             editor.TopView.Position.Restore();
  162.             editor.TopView.Block.Restore();
  163.             return rv;
  164.          } else
  165.             return pass(acSearch, acReplace);
  166.    } else {
  167.       return pass(acSearch, acReplace);
  168.    }
  169. }
  170.  
  171. on IDE:>SearchSearchAgain(){
  172.    if (IsEditKeyboard()) {
  173.       if (!DoIDESearchSearchAgain())
  174.           return pass();
  175.    } else {
  176.       return pass();
  177.    }
  178. }
  179.  
  180. on IDE:>SearchPreviousMessage(){
  181.    if (!DoIDESearchPreviousMessage())
  182.        return pass();
  183.    return true;
  184. }
  185.  
  186. on IDE:>SearchNextMessage(){
  187.    if (!DoIDESearchNextMessage())
  188.        return pass();
  189.    return true;
  190. }
  191.  
  192. on IDE:>SearchBrowseSymbol(declare SymbolName){
  193.  
  194.    if (!initialized(SymbolName)) {
  195.        SymbolName = editor.GetWord();
  196.    } else if (SymbolName == "") {
  197.        SymbolName = editor.GetWord();
  198.    }
  199.  
  200.    return pass(SymbolName);
  201. }
  202.  
  203. on IDE:>SearchLocateSymbol(declare SymbolName){
  204.  
  205.    if (!initialized(SymbolName)) {
  206.        SymbolName = editor.GetWord();
  207.    } else if (SymbolName == "") {
  208.        SymbolName = editor.GetWord();
  209.    }
  210.    return pass(SymbolName);
  211. }
  212.  
  213. //
  214. // Support Methods.
  215. //
  216.  
  217. IsEditKeyboard() {
  218.    return (IDE.KeyboardManager.GetKeyboard() == IDE.KeyboardManager.GetKeyboard("Editor") ||
  219.           IDE.KeyboardManager.GetKeyboard() == IDE.KeyboardManager.GetKeyboard("ClassExpert"));
  220. }
  221.  
  222.  
  223. on IDE:>ShowVersion(){
  224.    .StatusBar = .FullName;
  225. }
  226.  
  227. // called by the Editor's local menu
  228. on IDE:>EditorOpenSource(){
  229.  
  230.    editor.OpenFileAtCursor();
  231. }
  232.  
  233. on IDE:>DoFileOpen(declare FileName, declare ToolName, declare ProjectNode)
  234. {
  235.    if (ToolName != "Text Edit")
  236.      return pass(FileName, ToolName, ProjectNode);
  237.    if (editor.TopView == NULL)
  238.      return pass(FileName, ToolName, ProjectNode);
  239.    declare View = editor.TopView;
  240.    declare NameString = new String(View.Buffer.FileName);
  241.    if (NameString.SubString(0, 6).Text != "NONAME")
  242.      return pass(FileName, ToolName, ProjectNode);
  243.    if ((View.Buffer.IsModified) || (View.Buffer.Position.LastRow != 1))
  244.      return pass(FileName, ToolName, ProjectNode);
  245.  
  246.    declare editBuffer = new EditBuffer(FileName);
  247.    if (editBuffer != NULL) {
  248.        declare oldBuffer = View.Attach(editBuffer);
  249.        if (oldBuffer != NULL)
  250.            oldBuffer.Destroy();
  251.        return true;
  252.    }
  253.  
  254.    return false;
  255. }
  256.  
  257.  
  258. on IDE:>KeyboardAssignmentsChanged(declare nameOfKbdFile){
  259.  // Load the newly assigned keyboard.
  260.  declare String sEmulation(IDE.KeyboardAssignmentFile);
  261.  sEmulation = sEmulation.SubString(0,sEmulation.Index(".")-1).Text + "Emulation(false);";
  262.  scriptEngine.Execute(sEmulation);
  263.  
  264.  // This End is paired with the Start from KeyboardAssignmentsChanging
  265.  IDE.EndWaitCursor();
  266.  
  267.  return pass(nameOfKbdFile);
  268. }
  269.  
  270. on IDE:>KeyboardAssignmentsChanging(declare nameOfKbdFile){
  271.  
  272.  // This Start is paired with the Stop from KeyboardAssignmentsChanged
  273.  IDE.StartWaitCursor();
  274.  
  275.  if (bPopEditorKeyboard) {
  276.      .KeyboardManager.Pop("Editor");
  277.      bPopEditorKeyboard = false;
  278.  }
  279.  
  280.  // Unload existing editor emulation assignments.
  281.  declare String sEmulation(IDE.KeyboardAssignmentFile);
  282.  sEmulation = sEmulation.SubString(0,sEmulation.Index(".")-1).Text + "Emulation(true);";
  283.  scriptEngine.Execute(sEmulation);
  284.  
  285.  return pass(nameOfKbdFile);
  286. }
  287.  
  288. on IDE:>KeywordHelp(){
  289.    if (IsEditKeyboard()) {
  290.       declare sniglet = editor.GetWord();
  291.       return .HelpKeywordSearch(sniglet);
  292.    } else {
  293.       IDE.HelpContents();
  294.    }
  295. }
  296.  
  297. on IDE:>Compile(declare fileName){
  298.    if(initialized(fileName)){
  299.       .ProjectCompile();
  300.       return;
  301.    }
  302.    declare target = new ProjectNode(fileName);
  303.    return (target.Make());
  304. }
  305.  
  306. on IDE:>ReportError(declare msgText){
  307.    .MessageBeep();
  308.    .StatusBar = msgText;
  309. }
  310.  
  311. on IDE:>Assign(sequence, command, keyboard){
  312.    return keyboard.Assign(sequence, command);
  313. }
  314.  
  315. on IDE:>Unassign(sequence, keyboard){
  316.         return keyboard.Unassign(sequence);
  317. }
  318.  
  319. on IDE:>ToggleKeystrokeRecording(){
  320.  
  321.    declare curRec = .KeyboardManager.CurrentRecord;
  322.  
  323.    if (curRec != NULL) {
  324.       if (curRec.IsRecording) {
  325.          .KeyboardManager.StopRecord();
  326.          .StatusBar = "Keystrokes recorded";
  327.          return;
  328.         }
  329.  
  330.        if (curRec.IsPaused) {
  331.           .ReportError("Recording is currently paused");
  332.           return;
  333.        }
  334.    }
  335.  
  336.    .KeyboardManager.StartRecord(.KeyboardManager.CurrentRecord);
  337.    .StatusBar = "Defining keystroke recording";
  338. }
  339.  
  340. declare kbdOverwriteMacro = NULL;
  341.  
  342. on IDE:>BriefKeystrokeRecording() {
  343.  
  344.    declare curRec = .KeyboardManager.CurrentRecord;
  345.  
  346.    if (curRec != NULL) {
  347.       if (curRec.IsRecording) {
  348.          .KeyboardManager.StopRecord();
  349.          .StatusBar = "Keystrokes recorded";
  350.          return;
  351.         }
  352.  
  353.       if (kbdOverwriteMacro == NULL) {
  354.           kbdOverwriteMacro = new Keyboard(FALSE);
  355.            kbdOverwriteMacro.Assign("<y>","IDE.BriefKeystrokeRecordingYes();",ASSIGN_IMPLICIT_SHIFT);
  356.           kbdOverwriteMacro.DefaultAssignment = "IDE.BriefKeystrokeRecordingNo();";
  357.       }
  358.  
  359.       .KeyboardManager.Push(kbdOverwriteMacro, "Editor", FALSE);
  360.       bPopEditorKeyboard = true;
  361.       .StatusBar = "Overwrite existing keystroke macro [yn]?";
  362.  
  363.    } else {
  364.       .KeyboardManager.StartRecord(.KeyboardManager.CurrentRecord);
  365.       .StatusBar = "Defining keystroke recording";
  366.    }
  367. }
  368.  
  369. on IDE:>BriefKeystrokeRecordingYes() {
  370.    .KeyboardManager.Pop("Editor");
  371.    bPopEditorKeyboard = false;
  372.    .KeyboardManager.StartRecord(.KeyboardManager.CurrentRecord);
  373.    .StatusBar = "Defining keystroke recording";
  374. }
  375.  
  376. on IDE:>BriefKeystrokeRecordingNo() {
  377.    .KeyboardManager.Pop("Editor");
  378.    bPopEditorKeyboard = false;
  379.    .StatusBar = "";
  380. }
  381.  
  382. on IDE:>PlaybackKeystrokeRecording(){
  383.         declare curRec = .KeyboardManager.CurrentRecord;
  384.  
  385.         if (curRec != NULL) {
  386.  
  387.         if(curRec.IsRecording){
  388.          .ReportError("Can't playback while recording");
  389.          return;
  390.       }
  391.  
  392.       if(curRec.IsPaused){
  393.          .ReportError("Can't playback while paused");
  394.          return;
  395.       }
  396.  
  397.       if(curRec.KeyCount == 0){
  398.          .ReportError("Nothing to playback");
  399.          return;
  400.       }
  401.  
  402.       .KeyboardManager.Playback(curRec);
  403.    }
  404. }
  405.  
  406. // This event is triggered by an Alt-I preesed while viewing the HelpAbout Box
  407. on IDE:>DisplayCredits(){
  408.    Credits();
  409. }
  410.